Program Listing for File map_publisher.h
↰ Return to documentation for file (codes/cubicle_merge/map_publisher.h
)
/*******************************************************
* Copyright (C) 2019, Robotics Group, Nanyang Technology University
*
* \file map_publisher.h
* \author Zhang Handuo (hzhang032@e.ntu.edu.sg)
* \date Januarary 2017
* \brief Final step of publishing obstacles on RVIZ.
*
* Licensed under the GNU General Public License v3.0;
* you may not use this file except in compliance with the License.
*
*******************************************************/
#ifndef PROJECT_MAP_PUBLISHER_H
#define PROJECT_MAP_PUBLISHER_H
#include <ros/ros.h>
#include <visualization_msgs/Marker.h>
#include <visualization_msgs/MarkerArray.h>
#include "obstacle_ind_merge.h"
#include "obstacle_merge.h"
#include "util.h"
#include <Eigen/Dense>
//namespace rvt = rviz_visual_tools;
class MapPublisher{
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
MapPublisher(ros::NodeHandle, const ros::NodeHandle&,
obstacle_ind_merge *, Obstacle_merge*, bool local);
void Refresh(std_msgs::Header &header);
void timerCallback(const ros::TimerEvent&);
void PublishCurrentCamera(const Eigen::Isometry3d &Tcw, std_msgs::Header &header);
void SetCurrentCameraPose(const Eigen::Isometry3d &Tc2w);
void SetCurrentRoadAngle(double pitch);
Eigen::Isometry3d GetCurrentCameraPose();
ros::Timer timer_;
int sequence_;
private:
ros::NodeHandle n_local_;
void PublishObs(const std::map<unsigned long int, MapElement* > &mObs, std_msgs::Header &header);
void PublishObs_wide(const std::map<unsigned long int, MapElement* > &mObs, std_msgs::Header &header);
void Publish_road_arrow(double, std_msgs::Header &header);
void publish_trackedObs(const std::vector<TrackedObstacle*>&, std_msgs::Header&);
void publish_allObs(const std::vector<MapElement*>&, std_msgs::Header&);
void publishLabelHelper(const Eigen::Affine3d& pose, const std::string& label);
void publishPoints(const std::vector<std::vector<Eigen::Vector3d>>& points,
ros::Publisher& pub, const Eigen::Vector3i& color);
bool isCamUpdated();
void ResetCamFlag();
bool updateParams();
// individual obstacle merge
obstacle_ind_merge *mpObstacle_ind_merge;
// obstacles merge
Obstacle_merge *mpObstacle_merge;
ros::Publisher wide_publisher, long_publisher, road_publisher, lane_helper_publisher,
lane_publisher, curb_publisher, cam_publisher, long_text_publisher;
std::ofstream file_speed;
visualization_msgs::Marker vel_arrow;
visualization_msgs::Marker mCurrentCamera;
visualization_msgs::Marker mObsPoints;
visualization_msgs::Marker mObsPoints_t;
visualization_msgs::Marker mObsPoints_wide;
visualization_msgs::Marker mObsPoints_wide_t;
visualization_msgs::Marker mRoadArrow;
visualization_msgs::Marker mRoadDisk;
visualization_msgs::Marker mRoadArrow_t;
visualization_msgs::Marker mRangeHelper, mRangeHelper2;
std::vector<visualization_msgs::Marker> mRoad_dataset;
std::vector<visualization_msgs::Marker> mRoad_disk_dataset;
visualization_msgs::MarkerArray mObsBatch;
visualization_msgs::MarkerArray mObsBatch_text;
visualization_msgs::MarkerArray mObsBatch_wide;
visualization_msgs::MarkerArray mRoadArrows;
float fCameraSize;
float fPointSize;
Eigen::Isometry3d new_pose;
Eigen::Matrix3d rot_imu2cam;
bool mbCameraUpdated;
bool roadMap_publish;
bool local_frame_;
double road_pitch;
double pitch_degree;
std::string map_frame_id;
std::string local_frame_id;
std::string publish_obs_topic;
std::string publish_obs_text_topic;
std::string publish_lane_topic;
std::string publish_curb_topic;
};
#endif //PROJECT_MAP_PUBLISHER_H